﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XTYAPI.PLC
{
    /// <summary>
    ///生成脉冲 
    ///WangdDong QQ851879790
    ///使用“生成脉冲”指令，可以将参数 Q 置位为预设的一段时间。当参数 IN 的逻辑运算结果 (RLO) 从“0”变为“1”（信号上升沿）时，启动该指令。
    ///指令启动时，预设的时间 PT 即开始计时。无论未来输入信号的状态如何变化，都将为持续时间 PT 置位参数 Q。
    ///当 PT 正在计时时，在 IN 输入处检测到的新的信号上升沿对 Q 输出处的信号状态没有影响。可以在参数 ET 中查询当前时间值。
    ///该定时器值从 T#0s 开始，在达到持续时间 PT 后结束。达到持续时间 PT 时，且参数 IN 的信号状态为“0”，则复位参数 ET。
    /// </summary>
    public class TP:TON
    {
        bool iN,q;
        R_TRIG r_TRIG = new R_TRIG();
        F_TRIG f_TRIG = new F_TRIG();
        public new bool IN
        {
            get { return iN; }
            set
            {
                iN = r_TRIG.CLK = value;
                if (r_TRIG.Q)
                {
                    base.IN = true;
                }
            }
        }
        public new uint PT { get { return base.PT; } set { base.PT = value; } }

        public new bool Q { get { q = base.IN && !base.Q;  f_TRIG.CLK = q;if (f_TRIG.Q) base.IN = false;   return q ; } }
        public new uint ET { get { return base.ET; }}
    }
}
